package com.njbdqn.root

import com.njbdqn.call.{ALSCall, GlobalHotSellCall, GroupCall}
import com.njbdqn.datahandler.{KMeansDataHandler, LRDataHandler}
import com.njbdqn.filter.BanGoodFilter
import com.njbdqn.sort.LRGoodSort
import com.njbdqn.util.{HdfsConnection, MysqlConnection, ReadPropertiesFileTool}
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.catalyst.parser.SqlBaseParser.GroupingSetContext

object App {
  def main(args: Array[String]): Unit = {
    val spark = SparkSession.builder().appName("db").master("local[*]").getOrCreate()
    // 测试
    //    MysqlConnection.readTable(spark,"orders").show(false)
    //    import spark.implicits._
    //    val df = spark.createDataFrame(Seq(
    //      (1,"zs"),
    //      (2,"ls")
    //    )).toDF("id","name")
    //    MysqlConnection.writeTable(spark,df,"mytest")

    //    val map = ReadPropertiesFileTool.readProperty("mysql")
    //    println(map("driver"))

    //    HdfsConnection.writeDataToHdfs("/kb08/temp_test",df)
    //    HdfsConnection.readDataFromHdfs(spark,"/kb08/temp_test").show(false)




    // 调用过滤模块先过滤掉不能推荐的商品
//    BanGoodFilter.ban(spark)

    // 调用召回模块完成任务
    // 1. 全局热卖召回
//    GlobalHotSellCall.hotSell(spark)
    // 2. 分组召回
//    GroupCall.call(spark)
    // 3. ALS召回
//    ALSCall.call(spark)

    // 调用LRDataHandler并使用NotGoodFilter过滤用户已经购买的商品
    // 调用排序模块
//    LRGoodSort.grade(spark)


    spark.stop()
  }
}
